#ifndef RECORDSVIEWWIDGET_H
#define RECORDSVIEWWIDGET_H

#include <QWidget>
#include <QTableWidget>
#include <QDateEdit>
#include <QComboBox>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QHeaderView>
#include <QMessageBox>
#include <QFileDialog>
#include <QTextStream>
#include <QDate>
#include <QTableWidgetItem>
#include <QAbstractItemView>
#include "databasemanager.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class RecordsViewWidget;
}
QT_END_NAMESPACE

class RecordsViewWidget : public QWidget
{
    Q_OBJECT

public:
    explicit RecordsViewWidget(QWidget *parent = nullptr);
    ~RecordsViewWidget();
    
    // 设置当前用户
    void setCurrentUser(const UserInfo& userInfo);
    // 刷新记录列表
    void refreshRecords();

private slots:
    // 搜索按钮点击
    void onSearchClicked();
    // 重置搜索条件
    void onResetClicked();
    // 导出记录
    void onExportClicked();
    // 查看详情
    void onViewDetailClicked();
    // 表格双击
    void onTableDoubleClicked(int row, int column);
    // 用户选择变化
    void onUserSelectionChanged();

private:
    // 初始化UI
    void setupUI();
    // 加载记录到表格
    void loadRecordsToTable(const QList<StockRecord>& records);
    // 加载用户下拉框
    void loadUsers();
    // 加载物品下拉框  
    void loadItems();
    // 获取搜索条件
    RecordFilter getSearchFilter();
    // 更新统计信息
    void updateStatistics();
    // 导出为CSV
    void exportToCSV(const QString& fileName);
    // 获取选中的记录
    StockRecord getSelectedRecord();
    // 检查是否有选中项
    bool hasSelection();
    
    Ui::RecordsViewWidget *ui;
    UserInfo m_currentUser;
    QList<StockRecord> m_currentRecords;
    QList<UserInfo> m_allUsers;
    QList<ItemInfo> m_allItems;
};

#endif // RECORDSVIEWWIDGET_H